package com.shengzai

object Code18ClazzExtends {
  def main(args: Array[String]): Unit = {
    val teacher = new Teacher("张三", 24, "大数据", 10000)
    teacher.skill()
    println(teacher)

    // 多态
    // 当执行skill时，并不会直接调用Person类中的skill,而是调用teacher类中的skill
    //   说明当前person变量保存的是teacher对象的引用
    val person:Person = teacher
    person.skill()

  }
}


class Person(name: String, age: Int) {
  def skill(): Unit = {
    println("人类能跑能跳....")
  }
}

/**
 * 继承时父类的参数需要跟上，并且在Teacher的属性定义时，会将Teacher的属性值赋予给父类的属性
 *    类参数列表中的参数是常量，在后续不能够直接修改，如果需要修改，那么需要在参数名之前添加 var
 */
class Teacher(name: String, var age: Int, course: String, sal: Int) extends Person(name, age) {
  var course_ : String = course
  var sal_ : Int = sal

  override def toString: String = {
    s"$name,$age,$course,$sal"
  }

  override def skill(): Unit = {
    println("教师能教授大数据知识..")
  }

}

